package net.yakiboo.adrums;

import net.yakiboo.util.FileManager;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.ToggleButton;

public class DrumsPlayer extends Activity {
	private Song cancion = null;
	private String[] ficheros = null;

	private TextView tituloCancion, tiempoTranscurrido, tiempoFaltante;
	private ImageButton playButton, pauseButton, stopButton, loadButton;
	private SeekBar timer;
	private ListView lstFicheros;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.drumsplayer);

		tituloCancion = (TextView) findViewById(R.id.titulo);
		tiempoTranscurrido = (TextView) findViewById(R.id.tiempoTranscurrido);
		tiempoFaltante = (TextView) findViewById(R.id.tiempoFaltante);
		playButton = (ImageButton) findViewById(R.id.buttonPlay);
		pauseButton = (ImageButton) findViewById(R.id.buttonPause);
		stopButton = (ImageButton) findViewById(R.id.buttonStop);
		loadButton = (ImageButton) findViewById(R.id.buttonLoad);
		timer = (SeekBar) findViewById(R.id.seekBar);

		ficheros = FileManager.ls();
		
		if (ficheros == null)
			ficheros = new String[] { "No hay canciones" };
		ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, ficheros);

		lstFicheros = (ListView) findViewById(R.id.LstFicheros);
		lstFicheros.setAdapter(adaptador);

		Bundle bundle = getIntent().getExtras();
		boolean Loader = bundle.getBoolean("Loader");
		
		if (Loader) {
			/* Mostrar Lista de Archivos que puede Cargar */
			lstFicheros.setVisibility(ListView.VISIBLE);

		} else {
			cancion = new Song();
			String contenido = bundle.getString("Song");
			if (!contenido.equals("")) {
				try {
					String[] soundandtime = contenido.split("\n");
					String[] sounds = soundandtime[0].split(" ");
					String[] times = soundandtime[1].split(" ");

					for (int i = 0; i < sounds.length; i++)
						cancion.getSound().add(Integer.parseInt(sounds[i]));
					for (int i = 0; i < times.length; i++)
						cancion.getTime().add(Double.parseDouble(times[i]));
				} catch (ArrayIndexOutOfBoundsException e) {
					Log.e("Excepcion", contenido + " - " + e.toString());
				}
			}
		}

		lstFicheros.setOnItemClickListener(lstFicherosOnClickListener);

		loadButton.setOnClickListener(loadButtonOnClickListener);
		playButton.setOnClickListener(playButtonOnClickListener);
		pauseButton.setOnClickListener(pauseButtonOnClickListener);
		stopButton.setOnClickListener(stopButtonOnClickListener);
	}
	
	ListView.OnItemClickListener lstFicherosOnClickListener = new ListView.OnItemClickListener(){

		@Override
		public void onItemClick(AdapterView<?> a, View v, int position, long id) {
			// Acciones necesarias al hacer click
			lstFicheros.setVisibility(ListView.INVISIBLE);
			cancion = FileManager.cargar(ficheros[position]);
			tituloCancion.setText(ficheros[position]);
			if (!cancion.getTime().isEmpty()) {
				Double minutos = cancion.getTime().get(
						cancion.getTime().size() - 1) / 60;
				Double segundos = (minutos - minutos.intValue()) * 60;
				tiempoFaltante.setText(minutos.intValue() + ":"
						+ segundos.intValue());
			} else
				tiempoFaltante.setText("0:00");
			timer.setProgress(0);

			pauseButton.setVisibility(ImageButton.INVISIBLE);
			playButton.setVisibility(ImageButton.VISIBLE);
		}
	};
	
	ImageButton.OnClickListener loadButtonOnClickListener = new ImageButton.OnClickListener(){
		@Override
		public void onClick(View v) {	
			lstFicheros.setVisibility(ListView.VISIBLE);
		}
    };
    
    ImageButton.OnClickListener playButtonOnClickListener = new ImageButton.OnClickListener(){
		@Override
		public void onClick(View v) {	
			playButton.setVisibility(ImageButton.INVISIBLE);
			pauseButton.setVisibility(ImageButton.VISIBLE);
			if (!cancion.getTime().isEmpty()) {
				Double minutos = cancion.getTime().get(
						cancion.getTime().size() - 1) / 60;
				Double segundos = (minutos - minutos.intValue()) * 60;
				tiempoFaltante.setText(minutos.intValue() + ":"
						+ segundos.intValue());
				cancion.play(getApplicationContext());
			} else {
				tiempoFaltante.setText("0:00");
				timer.setProgress(0);
			}
		}
    };
    
    ImageButton.OnClickListener pauseButtonOnClickListener = new ImageButton.OnClickListener(){
		@Override
		public void onClick(View v) {	
			pauseButton.setVisibility(ImageButton.INVISIBLE);
			playButton.setVisibility(ImageButton.VISIBLE);
		}
    };
    
    ImageButton.OnClickListener stopButtonOnClickListener = new ImageButton.OnClickListener(){
		@Override
		public void onClick(View v) {	
			pauseButton.setVisibility(ImageButton.INVISIBLE);
			playButton.setVisibility(ImageButton.VISIBLE);
		}
    };
	
}
